package com.example.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
 * Description:
 * User: 阿宾
 * Date: 2025-04-29
 * Time: 10:15
 */
@Slf4j  //用来打印日志
@Component //需要被Spring管理，加上五大注解之一
@Aspect //表示当前类为切面类，用来处理某一类特定问题
public class TimeRecordAspect {

    /**
     * 记录接口耗时
     */
    @Around("execution(* com.example.controller.*.*(..))")
    public Object recordTime(ProceedingJoinPoint pjp) throws Throwable {
        //记录方法执行开始时间
        long begin = System.currentTimeMillis();
        //执行原始方法
        Object result = pjp.proceed();
        //记录方法执行结束时间
        long end = System.currentTimeMillis();
        //记录方法耗时
        log.info("执行耗时：{}ms",end - begin);
        return result;
    }
}
